﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once

#include "IEventArgs.h"

namespace gcmp
{
    class ElementId;
    class IDocument;

    /// \brief  模型GRep改变事件参数
    ///
    FINAL_INTERFACE class GCMP_MODEL_INTERFACE_EXPORT IElementModelShapeChangeEventArgs : public IEventArgs
    {
        DEFINE_CAST_DERIVED(gcmp::IElementModelShapeChangeEventArgs, gcmp::IEventArgs);
    public:

        ///  \brief 获取模型GRep发生改变的ElementId
        ///
        /// \return 模型GRep发生改变的ElementId
        virtual ElementId GetElementId() const = 0;
        
        /// \brief 设置事件中存储的ElementId
        /// 
        /// \param id Element的ElementId
        /// \return true表示设置成功，false表示设置失败
        virtual bool SetElementId(const ElementId &id) = 0;

        
        /// \brief 获得模型GRep发生改变的Element所属的文档
        /// 
        /// \return IDocument* 文档指针
        virtual IDocument* GetDocument() const = 0;

        /// \brief 设置本次事件源
        ///
        /// \param 本次事件源
        virtual void SetEvent(const IEvent* pEvent) = 0;
    };
}
